﻿Public Class Jeu7Wonders
    Implements Jeu

#Region "Variables"
    Private _joueur As New List(Of Joueur)
#End Region

#Region "Propriétées"
    Public Property Deck As New DeckOriginal
#End Region

#Region "Implementations"
    Public ReadOnly Property Joueurs As List(Of Joueur) Implements Jeu.Joueurs
        Get
            Return _joueur
        End Get
    End Property

    Public ReadOnly Property Nom As String Implements Jeu.Nom
        Get
            Return "7th Wonders"
        End Get
    End Property

    Public ReadOnly Property MaxJoueur As Integer Implements Jeu.MaxJoueur
        Get
            Return 7
        End Get
    End Property

    Public ReadOnly Property MinJoueur As Integer Implements Jeu.MinJoueur
        Get
            Return 3
        End Get
    End Property

#End Region

#Region "Constructeur"
    Public Sub New()
    End Sub
#End Region

#Region "Méthodes"

    Public Sub AjouterUnJoueur(joueur As Joueur)
        _joueur.Add(joueur)
    End Sub

    Public Sub InitialiserJeu() Implements Jeu.InitialiserJeu
        Valider()

        Deck.CreerDeck(1, _joueur.Count)
        Deck.Brasser()

        DistribuerCartesJoueurs()
    End Sub

    Private Sub Valider()
        If _joueur.Count > MaxJoueur OrElse _joueur.Count < MinJoueur Then
            Throw New Exception("Joueur en problème")
        End If
    End Sub

    Private Sub DistribuerCartesJoueurs()
        Dim i As Integer = 0
        While i < Deck.Cartes.Count
            For joueur As Integer = 0 To _joueur.Count - 1
                If i > Deck.Cartes.Count - 1 Then
                    Throw New IndexOutOfRangeException
                End If
                _joueur(joueur).Main.Add(Deck.Cartes(i))
                i += 1
            Next
        End While
    End Sub
#End Region
End Class
